#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>

//int removeDuplicates(int* nums, int numsSize)
//{
//    int left = 0;
//    int right = 0;
//    for (right = 1; right <numsSize; right++)
//    {
//        if (nums[left] != nums[right])
//        {
//            nums[++left] = nums[right];
//        }
//    }
//    return left + 1;
//}
//
//int main()
//{
//    int nums[] = { 1,2,3 };
//    removeDuplicates(nums, 3);
//    return 0;
//}

//void merge(int* nums1, int m, int* nums2,  int n) 
//{
//    int p = 0, q = 0;
//    //int nums3[m + n];
//    int* nums3 = (int*)malloc(sizeof(int) * (n + m));
//    int i = 0;
//    int j = 0;
//    int z = 0;
//    if (n != 0 && m != 0) 
//    {
//        while (j < n) 
//        {
//            if (nums1[p] <= nums2[q]) 
//            {
//                if (i < m) 
//                {
//                    nums3[z++] = nums1[p++];
//                    i++;
//                }
//                else 
//                {
//                    nums3[z++] = nums2[q++];
//                    j++;
//                }
//            }
//            else 
//            {
//                nums3[z++] = nums2[q++];
//                j++;
//            }
//        }
//        while (i < m) 
//        {
//            nums3[z++] = nums1[i++];
//        }
//
//        for (i = 0; i < m + n; i++) 
//        {
//            nums1[i] = nums3[i];
//        }
//    }
//    if (m == 0) 
//    {
//        for (i = 0; i < n; i++) 
//        {
//            nums1[i] = nums2[i];
//        }
//    }
//
//    free(nums3);
//    nums3 = NULL;
//}

void merge(int* nums1, int m, int* nums2, int n)
{
    int right1 = m - 1;
    int right2 = n - 1;
    int right_sum = n + m - 1;
    while (right1 != -1)
    {
        if (nums1[right1] <= nums2[right2])
        {
            nums1[right_sum--] = nums2[right2--];
        }
        else
        {
            nums1[right_sum--] = nums1[right1--];
        }
    }
    while (right_sum != -1)
    {
        nums1[right_sum--] = nums2[right1--];
    }
}

int main()
{
    int nums1[] = { 1,2,3,0,0,0 };
    int nums2[] = { 2,5,6 };
    merge(nums1, 3, nums2, 3);
	return 0;
}